package com.sunlee.admin.api.module.job.service;

import com.sunlee.admin.api.module.job.entity.ScheduleJobEntity;
import com.sunlee.admin.api.module.job.dto.ScheduleJobDTO;
import com.sunlee.common.core.entity.PageData;
import com.sunlee.common.core.service.BaseService;

import java.util.Map;

/**
 * 定时任务
 *
 * @author sunlee
 */
public interface ScheduleJobService extends BaseService<ScheduleJobEntity> {

    /**
     * 定时任务分页查询
     *
     * @param params 查询参数
     * @return 定时任务分页实体
     */
    PageData<ScheduleJobDTO> page(Map<String, Object> params);

    /**
     * 根据主键查询任务
     *
     * @param id 主键
     * @return 定时任务实体
     */
    ScheduleJobDTO get(Long id);

    /**
     * 保存定时任务
     *
     * @param dto 查询参数
     */
    void save(ScheduleJobDTO dto);

    /**
     * 更新定时任务
     *
     * @param dto 查询参数
     */
    void update(ScheduleJobDTO dto);

    /**
     * 批量删除定时任务
     *
     * @param ids 定时任务主键集合
     */
    void deleteBatch(Long[] ids);

    /**
     * 批量更新定时任务状态
     *
     * @param ids    定时任务主键集合
     * @param status 任务状态
     * @return 是否更新成功
     */
    int updateBatch(Long[] ids, int status);

    /**
     * 立即执行
     *
     * @param ids 定时任务主键集合
     */
    void run(Long[] ids);

    /**
     * 暂停运行
     *
     * @param ids 定时任务主键集合
     */
    void pause(Long[] ids);

    /**
     * 恢复运行
     *
     * @param ids 定时任务主键集合
     */
    void resume(Long[] ids);
}
